#!/usr/bin/python3
# -*- coding: UTF-8 -*-

# 排序算法

# 内置的sorted()函数就可以对list进行排序
print(sorted([25,-45,25,32,58,14,-23]))

# sorted()函数也是一个高阶函数，它还可以接收一个key函数来实现自定义的排序
# 按绝对值大小排序
print(sorted([25,-45,25,32,58,14,-23], key=abs))

# 字符串排序
print(sorted(['bob', 'about', 'Zoo', 'Credit']))
# 对字符串排序，是按照ASCII的大小比较的，由于'Z' < 'a'，结果，大写字母Z会排在小写字母a的前面

# 忽略大小写，按照字母序排序
print(sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower))

# 反向排序
print(sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True))

# 用一组tuple表示学生名字和成绩
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
# 分别按名字排序
def by_name(t):
    return t[0]
# 按成绩从高到低排序
def by_score(t):
    return t[1]

print(sorted(L, key=by_name))
print(sorted(L, key=by_score, reverse=True))


